﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Configuration;
using Crosland.Automotriz.Logic.Linq;
using Crosland.Automotriz.Entidad;

namespace Crosland.Automotriz.Web.CRM
{
    public partial class wFrmClienteActualizar : System.Web.UI.Page
    {
        string idGestionComercial = ConfigurationManager.AppSettings["GestionComercial"];
        clsTD_ClienteBL blCliente = new clsTD_ClienteBL();
        const string script = "MostrarAlerta();";

        protected void Page_Load(object sender, EventArgs e)
        {
            if (Page.IsPostBack == false) 
            {
                CargarDatosGenerales();
                ListarRazonesSociales();
                Panel img = (Panel)Master.FindControl("asp");
                img.Visible = false;
            }
        }

        protected void btnSalir_Click(object sender, EventArgs e)
        {
            string busqueda = "";
            if (Request.QueryString["busqueda"] != null)
            {
                busqueda = Request.QueryString["busqueda"];
            }
            Response.Redirect("wFrmCliente.aspx?id=" + idGestionComercial + "&busqueda=" + busqueda);
        }

        void CargarDatosGenerales()
        {
            int Id_Cliente = int.Parse(Request.QueryString["idCliente"]);
            TD_CLIENTE rz = blCliente.Listar(Id_Cliente);
            lblIdCliente.Text = rz.ID_CLIENTE_SUP.ToString();
            TD_CLIENTE cli = blCliente.Listar(int.Parse(lblIdCliente.Text));

            if (cli == null) 
            {
                btnRegistrar.Enabled = false; 
            }
            else
            {
                if (!string.IsNullOrEmpty(cli.COD_CLIENTE)) { lblCodigo.Text = cli.COD_CLIENTE.Trim().ToUpper(); } else { lblCodigo.Text = ""; }
                if (!string.IsNullOrEmpty(cli.NOM_COMERCIAL)) { txtNombreComercial.Text = cli.NOM_COMERCIAL.Trim().ToUpper(); } else { txtNombreComercial.Text = ""; }
            }
        }

        void ListarRazonesSociales()
        {
            List<TD_CLIENTE> cli = new List<TD_CLIENTE>();
            cli = blCliente.ListarRazonesSociales(int.Parse(lblIdCliente.Text));
            gvRazonesSociales.DataSource = cli;
            gvRazonesSociales.DataBind();
            gvRazonesSociales.FocusedRowIndex = -1;
        }

        protected void btnRegistrar_Click(object sender, EventArgs e)
        {
            if (txtNombreComercial.Text.Trim() == "") 
            {
                lblMensaje.Text = "Debe ingresar el nombre comercial";
                ScriptManager.RegisterStartupScript(this, typeof(Page), "x", script, true);
                txtNombreComercial.Focus();
                return;
            }
            try
            {
                TD_CLIENTE obj = new TD_CLIENTE();
                obj.ID_CLIENTE = int.Parse(lblIdCliente.Text);
                obj.NOM_COMERCIAL = txtNombreComercial.Text.Trim().ToUpper();
                blCliente.ActualizarNombreComercial(obj);

                lblMensaje.Text = "Datos registrados satisfactoriamente";
                ScriptManager.RegisterStartupScript(this, typeof(Page), "x", script, true);
            }
            catch (Exception ex)
            {
                lblMensaje.Text = ex.Message;
                ScriptManager.RegisterStartupScript(this, typeof(Page), "x", script, true);
            }
        }

        protected void btnBuscar_Click(object sender, EventArgs e)
        {
            Buscar();
        }

        void Buscar()
        {
            string DES_CLIENTE = txtBuscarNombre.Text.Trim();
            string NIF = txtBuscarRUC.Text.Trim();
            int Id_Cliente = int.Parse(lblIdCliente.Text);
            int filas = int.Parse(cboOpcion.SelectedItem.Value.ToString());

            gvBusqueda.DataSource = blCliente.ListarRazonesSocialesNoAgrupadas(Id_Cliente, DES_CLIENTE, NIF, filas);
            gvBusqueda.DataBind();
        }

        protected void btnAgregarRazonesSociales_Click(object sender, EventArgs e)
        {
            int Id_Cliente = int.Parse(lblIdCliente.Text);
            int ID_CLIENTE;
            for (int i = 0; i < gvBusqueda.VisibleRowCount; i++)
            {
                if (gvBusqueda.Selection.IsRowSelected(i))
                {
                    ID_CLIENTE = int.Parse(gvBusqueda.GetRowValues(i, "ID_CLIENTE").ToString());
                    TD_CLIENTE eCliente = new TD_CLIENTE();
                    eCliente.ID_CLIENTE = ID_CLIENTE;
                    eCliente.ID_CLIENTE_SUP = Id_Cliente;
                    blCliente.ActualizarRelacion(eCliente);
                }
            }

            ListarRazonesSociales();
            pcClientes.ShowOnPageLoad = false;
        }

        protected void btnQuitar_Click(object sender, EventArgs e)
        {
            try
            {
                int fila = gvRazonesSociales.FocusedRowIndex;
                if (fila >= 0)
                {
                    int ID_CLIENTE;
                    ID_CLIENTE = int.Parse(gvRazonesSociales.GetRowValues(fila, "ID_CLIENTE").ToString());

                    if (ID_CLIENTE.ToString() == lblIdCliente.Text.Trim())
                    {
                        lblMensaje.Text = "Esta razón social no se puede quitar";
                        ScriptManager.RegisterStartupScript(this, typeof(Page), "x", script, true);
                    }
                    else
                    {

                        TD_CLIENTE eCliente = new TD_CLIENTE();
                        eCliente.ID_CLIENTE = ID_CLIENTE;
                        eCliente.ID_CLIENTE_SUP = ID_CLIENTE;
                        blCliente.ActualizarRelacion(eCliente);

                        ListarRazonesSociales();

                        lblMensaje.Text = "La razón social se ha quitado satisfactoriamente";
                        ScriptManager.RegisterStartupScript(this, typeof(Page), "x", script, true);

                    }
                }
                else 
                {
                    lblMensaje.Text = "Debe seleccionar una razón social";
                    ScriptManager.RegisterStartupScript(this, typeof(Page), "x", script, true);
                }
            }
            catch (Exception ex)
            {
                lblMensaje.Text = ex.Message;
                ScriptManager.RegisterStartupScript(this, typeof(Page), "x", script, true);
            }
        }

        protected void gvBusqueda_PageIndexChanged(object sender, EventArgs e)
        {
            Buscar();
        }

        protected void btnAgregar_Click(object sender, EventArgs e)
        {
            pcClientes.ShowOnPageLoad = true;
        }

        protected void btnLocales_Click(object sender, EventArgs e)
        {
            int indice = gvRazonesSociales.FocusedRowIndex;
            if (indice >= 0)
            {
                List<object> keys = gvRazonesSociales.GetSelectedFieldValues(new string[] { gvRazonesSociales.KeyFieldName });
                if (keys.Count == 0)
                {
                    lblMensaje.Text = "Debe seleccionar una razón social";
                    ScriptManager.RegisterStartupScript(this, typeof(Page), "x", script, true);
                }
                else
                {
                    string idCliente = keys[0].ToString();
                    Response.Redirect("wFrmClienteLocal.aspx?idCliente=" + idCliente + "&id=" + idGestionComercial);
                }
            }
            else 
            {
                lblMensaje.Text = "Debe seleccionar una razón social";
                ScriptManager.RegisterStartupScript(this, typeof(Page), "x", script, true);
            }
        }

    }
}